package Test.Reseau;

import java.net.*;
import java.io.*;

/**
 * Classe permettant la connexion
 * @version 1.0
 * date 02/01/2008
 * @author Sebastien Depoix
 */
public class TestConnexion extends Thread{

    /**
     * Creation de socket
     */
    private Socket socket;
    
    /**
     * Canal de communication
     */
    private DataInputStream dosEnEntree;


    public TestConnexion(Socket socket) {
        this.socket = socket;

        //creation des canaux de communication
        try {
            //enSortie = new DataOutputStream(socket.getOutputStream());
            dosEnEntree = new DataInputStream(socket.getInputStream());
        } catch (IOException e) {
            System.out.println("Pb de creation des canaux de communication");
            e.printStackTrace();
        }
    }

    public void run() {
        
        System.out.println("run");
     

        //reception du message a partir du reseau
        byte[] message;

        //on sort de la boucle sur declenchement d'une exception de la part du client
        while (true) {
            try {
                //reception de la longueur du message
                int lg = dosEnEntree.readInt();

                message = new byte[lg];

                //lecture du contenu
                dosEnEntree.readFully(message);
            } catch (IOException e) {
                //sortie de la boucle infini while(true) quand le client n'existe plus
                System.out.println("Fin de connexion du client");
                //e.printStackTrace();
                break;
            }
            //Conversion octet vers string
            String sMessage = new String(message);
            
            //Affichage du message
            System.out.println("Recu : "+sMessage);
        }
            
        //on est sortie du while sur fin de client
        try {
            dosEnEntree.close();
            socket.close();
        } catch (IOException e) {
            System.out.println("Soucis de fermeture des canaux de communication");
            e.printStackTrace();
        }
    }
}
